// 版权所有2017 etcd作者
// 
// 根据Apache许可证2.0版（以下简称“许可证”）获得许可；
// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

// 包排序是一个clientv3包装程序，用于缓存响应头修订版
// 以检测过时响应中的排序冲突。用户可以定义关于如何处理排序冲突的
// 策略，但通常情况下，客户端
// 应该连接到另一个端点并重新发出请求。
// 
// 发生排序冲突的最常见情况是客户端
// 重新连接到分区成员并发出可序列化读取。由于
// 分区成员可能位于最后一个成员之后，因此它可能会返回一个Get 
// 响应，该响应基于比用于
// 在前一个端点上为先前Get提供服务的存储版本更早的存储版本。首先，创建一个客户端：
// 
// cli，err:=clientv3。新建（clientv3.Config{Endpoints:[]字符串{“localhost:2379”}}）
// if err！=nil{
// /处理错误！
// }
// 
// 接下来，用排序包装覆盖客户端接口：
// 
// vf:=func（op clientv3.op，resp clientv3.OpResponse，prevRev int64）错误{
// 返回fmt.Errorf(“ordering:issued%+v，Get%+v，expected rev=%v”，op，resp，prevRev）
// }
// cli.KV=ordering.NewKV（cli.KV，vf）
// 
// Now使用“cli”的调用将拒绝违反订单的行为，但有错误。
// 
package ordering
